#ifndef RESOURCEMANAGER_H
#define RESOURCEMANAGER_H

// Resource manager for getting the pointers for
// loaded shaders, textures and models.

class Sound2D;
class Sound3D;
class AudioManager;
class RenderSystem;
class ShaderManager;
class TextureManager;
class ModelManager;
class ResourceManager
{
public:
	ResourceManager(RenderSystem* render_system);
	~ResourceManager(void);

	Shader* GetShader(const String& vs_filename, const String& ps_filename);
	Texture* GetTexture(const String& texture_filename);
	Renderable* GetModel(const String& model_filename);
	Sound2D* GetSound2D(const String& filename);
	Sound3D* GetSound3D(const String& filename);
	void Remove2DSound(const String& filename);
	void Remove3DSound(const String& filename);

private:
	ShaderManager* m_shader_manager;
	TextureManager* m_texture_manager;
	ModelManager* m_model_manager;
	AudioManager* m_audio_manager;
};

#endif //RESOURCEMANAGER_H